package br.ufrn.dimap.ase.squid.metrics.explorer;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Explorador extends ExploradorUtil {
	
	private Map<String, List<File>> mapping;
	
	public Explorador() {
		this.mapping = new HashMap<String, List<File>>();
	}
	
	public Explorador(String path) {
		this.mapping = new HashMap<String, List<File>>();
		
		popular(path);
	}
	
	public void popular(String path) {
		File file = new File(path);
		
		popular(file);
		
		mostrarMapping(mapping);
	}
	
	/**
	 * Faz os mapeamentos
	 * 
	 * @param file
	 */
	public void popular(File file) {
		if(file.isDirectory()){
			File[] files = file.listFiles();
			
			for (File f : files) 
				popular(f);
		}
		
		if(file.isFile() && file.getPath().endsWith(SUFIXO_ARQUIVO)) 
			addMapping(file);
	}
	
	/**
	 * Adicionar um arquivo no mapeamento
	 * 
	 * @param file
	 */
	private void addMapping(File file) {
		String path = getPathFile(file);
		String name = file.getName();
		
		if(!mapping.containsKey(path))
			mapping.put(path, new ArrayList<File>());
		
		if(!mapping.containsValue(name))
			mapping.get(path).add(file);
	}

	public Map<String, List<File>> getMapping() {
		return mapping;
	}

	public void setMapping(Map<String, List<File>> mapping) {
		this.mapping = mapping;
	}

}
